package com.example.demo.suanfa_2tree;

/**
 * @program: java_base
 * @description: 二叉树
 * @author: zhouhongtao
 * @happyCreateTime: 2022/02/25 16:11
 */
public class RecursiveTraversalBTDemo {

    /**
     * 递归序
     * 每个节点，遍历完成都有三次出现
     * 输出第一次：先序
     * 输出第二次：中序
     * 输出第三次：后续
     */



    static class Node{
        int value;
        Node left;
        Node right;
    }

    public void f(Node node){
        if (node == null){
            return;
        }
        //1
        f(node.left);
        // 2
        f(node.right);
        //3
    }


    /**
     * 前 中 后 序:是头得位置决定名称，和特性得。
     * 详见 f()函数
     * @param node
     */
    // 先序遍历： 头 左  右
    public void pre(Node node) {
        if (node == null){
            return;
        }
        System.out.println(node.value);
        pre(node.left);
        pre(node.right);
    }

    // 中序遍历：  左 头 右
    public void mid(Node node){
        if (node == null){
            return;
        }
        mid(node.left);
        System.out.println(node.value);
        mid(node.right);
    }

    // 后序遍历： 左 右 头
    public void post(Node node){
        if (node == null){
            return;
        }
        post(node.left);
        post(node.right);
        System.out.println(node.value);
    }








}
